
S-C Software Corporation

2331 Gus Thomasson, Suite 125, P.O. Box 280300, Dallas, Texas 75228
(214) 324-2050


S-C Macro Assembler Version 1.1


Here is your copy of the latest upgrade to the S-C Macro Assembler.
Version 1.1 includes many small enhancements, and is compatible with
the //e, Videx, and STE 80-column Systems as well as 40-column Apples.

This disk contains eight versions of the S-C Macro Assembler. A
version loading at $1000 and a version loading at $D000 are provided
for four different configurations:

    a normal 40-column Apple J[ or If Plus,
    a 40- or 80-column Apple //e,
    an Apple ][ or ][ Plus with the Videx 80-column card,
    or an Apple ][ or ][ Plus with the STB-80 card.

The HELLO program checks to see whether you have an Apple //e or an
older version.  If not a //e, HELLO next presents a menu for you to
choose a 40-column, Videx, or STB-80 version.  HELLO then displays a
menu so you can choose between the $1000 and the $D000 versions for
the configuration you have.

Both //e versions begin operation in 40-column mode.  If you have
the //e 80-column card, you may switch to 80-column mode by typing PR#3.

You may wish to construct a HELLO program which more directly loads
the version you normally use.  It is quite simple, and can be done
with a one-line program.  For example, to start up the //e $D000
version:

    100 PRINT CHR$(4)"EXEC LOAD LCASM.E":END

Or the Videx $1000 version:

    100 PRINT CHR$(4)"BRUN S-C.ASM.MACRO.l000.VIDEX"

The file named APPLESOFT is an Integer BASIC program which will be
executed instead of HELLO if you have an Apple ][ with Integer BASIC
on the motherboard.  It operates in much the same way as HELLO, with
the exception that the //e versions are not offered.

There are several files called EXAMPLE ... which contain examples of
all the new directives in use.

The Version 1.1 disk is not copy-protected in any way.  Make a
back-up copy now, and store the original in a safe place.  You may
also use the FID program (from the DOS 3.3 Master Disk) to move
individual files to your working disks.  You will probably want to do
this, and rename the files for easy access.

- 1 -

--------------------------------------------------------------------------


Features added in support of Apple //e:

1. The Apple //e version allows you to change between 80- and 40-
column screens at will, using PR#3 to go to 80-columns, or
ESC-control-Q to go to 40-columns.  If you choose to enter 80-column
mode, the //e version assumes you have the Apple 80-column card
installed.

2. In both normal input and edit modes, the DELETE key ($FF) acts
like a backspace key.  It is interpreted the same as a left arrow
(control-H, $88).

3. Unfortunately, the Apple //e 80-column firmware makes it
impractical to support the ESC-L command to LOAD a file by lifting
the filename from the screen.  ESC-L is supported only in 40-column
mode.

4. The //e firmware handles ESC-cursor motions in a slightly
different manner.  The right arrow will not terminate the ESC-IJKM
mode.


About the 80-column Macro Assembler versions:

1. When using the Escape key editing functions (keys A-F, IJKM, and
@) you should exit the ESCape mode with some key other than right
arrow.  This is because the right arrow key will send the character
beneath the cursor to the escape-key processor and some funny things
might happen to the screen if the key  matches one of the valid
ESCape key functions.

2. To exit from the Videx or STB-80 assembler you should use PR#3 to
unhook the assembler I/O hooks.  Then type FP (or INT, if you have an
Integer BASIC motherboard).  Forgetting to type PR#3 could cause
random results.

3. To return to the assembler after using a printer, use RESET to
turn off the printer and return to the assembler. Although PR#3
appears to let you return to the assembler you will find that some of
the keyboard editing functions may not work right because the
assembler is not hooked into the I/O hooks.  The RESET will cause the
assembler to hook itself back into the I/O hooks and return I/O to
your 80-column card.

4. In using the MNTR command, the ESCape editing functions will not
work from the Apple monitor unless you type PR#3 to unhook the
assembler before typing MNTR.  You should then return to the
asseinbler with 3D0G or RESET to have the assembler rehook itself
back into the I/O hooks.





- 2 -

--------------------------------------------------------------------------

Extended or Modified Features:

1. The .HS directive now allows optional "." characters before and
after each pair of hex digits.  (e.g., .HS ..12..34..) This makes for
easier counting of bytes, and allows you to put meaningful comments
above or below the .HS lines. (page 5-6)

2. .DO--.FIN sections can now be nested to 63 levels, rather than
just 8 levels.  (pages 5-9, B-2)

3. In the EDIT command, the insert mode is now invoked by control-A
(for ADD), rather than control-I.  This was done because the TAB key
on the //e produces a a control-I code. The TAB or control-I keys now
perform a clear-to-tab function.  Skip-to-tab is still invoked by
control-T. (page 4-10, ref card)

4. Comment lines may begin with either "*" or ";" (page 3-5)

5. Memory protection during assembly has been expanded.  In addition
to the space for the private label and symbol tables, and the space
from the base of the source code to the end of memory, the assembler
now protects system areas at $00lF-$02FF and $03D0-$07FF.  (page A-2)

6. New user parameters have been added to allow memory protection to
be over-ridden.  $101C-101D ($D01C-D01D) contains the lower bound,-
and $101E-101F ($D01E-D01F) contains the upper bound of an area the
user wants to UN-PROTECT.  These locations contain zeroes when full
memory protection is in force.  (The parameter for the starting page
of the symbol table has moved from $101D to $1021, or $D01D to
$D021.)  (pages A-2, D-2)

7. The TAB character at $100F ($D00F) may now be set to any
character, including non-control characters, if you so desire.  The
TEXT/ <filename> command now outputs the current TAB character
(default ctrl-I).  It used to output control-I no matter what the
current TAB character was. (pages 3-2, D-l)

8. Line numbers may now have up to five digits, in the range from 0
through 65535.  Previous versions restricted line numbers to no more
than four digits.  (pages 2-1, 3-1)

9. The .BS directive now generates a RANGE ERROR if the number of
bytes is negative, or greater than 32767.  (Pages 5-7, B-l)




- 3 -

--------------------------------------------------------------------------

New Features:

1. The .SE directive has been added, to allow re-definable symbols.
Symbols which are originally defined by the SE directive may be
re-defined within the same assembly.  This directive allows a counter
within macro definitions, as shown in the file EXAMPLE OF .SE
DIRECTIVE.  Here are some other examples:

    0006-       1000 A   .SE 6
    0060-       1010 A   .SE A*$l0
    0008-       1020 B   .EQ 8
    000C-       1030 A   .SE A/B

A label defined with a .EQ statement cannot be redefined.

2. Binary constants are now supported.  The syntax is "%l10000l110l"
(up to 16 bits).  To make it easier to read the binary constants, you
may include optional periods as visual separators between the binary
digits or groups of digits.  Here are some examples:

    0800- AD 08 01  1000    LDA %100001000
    0803- 29 7F     1010    AND #%01111111
    0807- 01 80     1020    .DA %1000000000000001
    0809- 34 12     1030    .DA %0001.0010.0011.0100

3. ASCII literals with the high-bit set are now allowed, and are
signified with the quotation mark: LDA #"X generates A9 D8.  Note
that a trailing "-mark is optional, just as is a trailing apostrophe
with previous ASCII literals.

4. Blanks are now compressed inside macro skeletons when they are
added to the symbol table.  This saves about 30% of the space used by
the skeletons.

5. .PH and .EP directives are now available, to start and end a
phase.  With these directives you can assemble a section of code that
is intended to be moved and executed somewhere else, without having
to create a separate Target File.  .PH <expr> effectively sets the
origin to <expr>, but keeps the target address unchanged.  When the
.EP is encountered, the origin is reset to match the target address.

    0800- AD 03 9D  1000    START LDA DATA
    0803- 60        1010          RTS
                    1020    *------------------------------
                    1030          .PH $9D00
    9D00- A9 08     1040    PATCH LDA /ADDR
    9D02- 60        1050          RTS
    9D03-           1060    DATA  .BS 1
                    1070          .EP
                    1080    *------------------------------
    0808- 00 9D     1090    ADDR  .DA PATCH

SYMBOL TABLE
    0808- ADDR  9D03- DATA  9D00- PATCH 0800- START

- 4 -

--------------------------------------------------------------------------

Notice that the object code column and the symbol table show the code
to be in different locations, but if you examine memory you will find
all the code starting at $800.

6. We added .DUMMY and .ED directives to start and end a dummy
section.  A dummy section assembles, but no object code is produced.
Dummy sections are useful when specifying data blocks, or when you
want to run an assembly for syntax checking, but do not want to
generate object code.  .DUMMY and .ED are like the DSECT and DEND
directives in Apple's Tool Kit Assembler, with the exception that the
dummy origin is not automatically set to $0000.  Any .OR directives
within the dummy section will only be effective within the section;
.DUMMY saves the current origin, and .ED restores it.

    0800- 34 12     1000 ADDR  .DA LABEL
                    1010 *-----------------------------
                    1020       .DUMMY
                    1030       .OR $1234
    1234- AD 00 08  1040 LABEL LDA ADDR
    1237-           1050 NEXT  .BS 1
                    1060       .ED
                    1070 *-----------------------------
    0802- AD 35 12  1080 GO.ON LDA NEXT

    SYMBOL TABLE

    0800- ADDR  0802- GO.ON 1234- LABEL 1237- NEXT

7. HIDE now performs MERGE prior to HIDE, in case you forgot to do
so.  This allows a string of "LOAD HIDE LOAD HIDE....LOAD HIDE MERGE"
commands to merge a lot of source files together.


Fixes to Known Problems:

1. We eliminated the endless loop which occurred when a character
greater than "Z" was typed in column 1 as a command.

2. Listings controlled by the .TI directive now properly space at top
of each page, and at beginning of symbol table.

3. The .AS and .AT directives now assemble lower case properly.

4. We changed the way the relative branches are assembled, so that
"*" is equal to the location of the opcode byte.  It used to be the
location offset byte, which was nonstandard.  However, we still do
not recommend you use the "*+nn" or "*-nn" addressing in relative
branches: it is a dangerous practice.

5. Pass two errors now emit the proper number of object bytes, so
that false range errors are not indicated in an assembly which has
undefined labels.

- 5 -

--------------------------------------------------------------------------


Full Screen Editor Addendum

S-C Macro Assembler 1.1

The new version of the S-C Macro Assembler is now availiable.  This
version has a standard 40 column, Apple lie, VIDEX, and STB 80 column
assembler all on the same diskette.

The patch addresses in the new Macro Assembler however are all
different.  The Macro Assember code shown on page 9 of the Screen
Editor manual is shifted up by 5 bytes.

The EXEC file on page 8 would have the following line changes to
accomodate the shift in patch addresses:

1080 D06B:4C E0 F7

1100 F7E8:4C 6F D0 4C 78 D0 AD 88 C0


Note the following addresses change:

    D066 --> D06B
    D06A --> D06F
    D073 --> D078

These changes have already been applied to the current disk file6 "ED
l.l", and "ASMED 1.1".



New functions added to the Editor.

The keyboard for the Apple II Plus is not the same as that used on
other computers such as the Apple IIe and the Franklin Ace computers.
Some keys chosen for their convenient fingertip location on the Apple
II Plus are not so convenient on other keyboards.  Therefore the
following editor key functions have been defined as duplicates.

                    Franklin &
    Apple II Plus   Apple IIe   Function
    -------------   ---------   ---------------------
    Shift 2 (")         @       long scroll back
         :              ,       horizontal scroll left
         -              .       horizontal scroll right

Note that the key functions ",." have a nice feature in that the
shift functions are "<>1' on all the keyboards.  This jogs your
memory about thier true function, left and right horizontal scroll.

--------------------------------------------------------------------------

New Files on disk:

ED 1.1 - An EXEC file to be EXECed from the 1.1 version of the S-C
Macro Assembler which is running in the language card.  This EXEC
file will load the Full Screen Editor into the unused 4K bank of
memory on the language card.

ASMED 1.1 - An EXEC file which can load the S-C Macro Assembler
version 1.1 and the Full Screen Editor into your language card and
start the assembler.  You should move the file "S-C.ASM.MACRO.D000"
from the Assembler diskette to this Editor diskette to be able to use
this EXEC file.  There 45 a BLOAD command in this EXEC file to load
the Assembler, the file names must be made to match.

B.DRIVER.AP2E - Apple IIe 80 column video driver.  This is the object
file used by the SYSGEN program to build an Apple lie Full Screen
Editor version.

S.DRIVER.AP2E - Apple IIe 80 column board video driver. SYSGEN - This
Applesoft program has been updated to allow the new Apple lie driver
to be one of the selections on the menu.


Note that the Apple IIe driver should only be used with the S-C Macro
Assembler version 1.1 for the Apple IIe.  The 40 column driver can
also be used with the Apple IIe but you must always enter the Editor
in 40 column display mode.  If you do not have a 80 column card for
your Apple IIe then the 40 column driver must be the driver that you
use.

--------------------------------------------------------------------------
